The present invention relates to direct memory access (DMA) devices, and in particular to sound synthesis drivers.
A DMA device is a device which can access memory without using the CPU in a computer system. This allows a faster data transfer than if the CPU had to be used for transferring every byte of data. In systems using virtual addresses with page translation, the DMA device typically either uses exclusively physical addresses or may use the virtual address with a translation being done by a separate memory controller chip outside of the system CPU.
A computer system will have an operating system which controls communications between the main microprocessor, memory and any peripherals. In the Microsoft Windows '95 operating system, the host processor only allocates contiguous memory as requested upon start-up of the system. Thus, if a peripheral desires a contiguous block of memory, it must request it upon start-up. Otherwise, the host processor will only allocate memory without regard to contiguity. Thus, when a peripheral subsequently requests a block of memory, that block may be distributed over a series of smaller blocks in available spaces in main memory, as set forth in a page table maintained by the host microprocessor.
An internal bus is typically used to connect the microprocessor and main memory to other peripherals. For example, Intel has popularized the PCI bus for this purpose. Among the peripherals that may be attached would be sound boards or 3D graphics boards for providing sound and graphic synthesis and other functions. These devices often need to contain their own on-board memory because of the access speeds required for sound and graphics manipulations.
Some microprocessors include native signal processing capabilities, which enable them to perform certain graphics operations or sound manipulations in the host CPU itself. This has the advantage of allowing the host to directly access the main memory for the required data quickly, and without the cost of an additional board, but with a limitation of adding more complexity to the host microprocessor.